glTexGend,
glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv
[New
- Windows 95, OEM Service Release 2]
These
functions control the generation of texture coordinates.
void glTexGend(
GLenum coord, |
|
GLenum pname, |
|
GLdouble param |
|
); |
|
void glTexGenf(
GLenum coord, |
|
GLenum pname, |
|
GLfloat param |
|
); |
|
void glTexGeni(
GLenum coord, |
|
GLenum pname, |
|
GLint param |
|
); |
|
Parameters
coord
A texture
coordinate. Must be one of the following: GL_S, GL_T, GL_R, or GL_Q.
pname
The symbolic
name of the texture-coordinate generation function. Must be
GL_TEXTURE_GEN_MODE.
param
A
single-valued texture generation parameter, one of GL_OBJECT_LINEAR,
GL_EYE_LINEAR, or GL_SPHERE_MAP.
void glTexGendv(
GLenum coord, |
|
GLenum pname, |
|
const GLdouble *params |
|
); |
|
void glTexGenfv(
GLenum coord, |
|
GLenum pname, |
|
const GLfloat *params |
|
); |
|
void glTexGeniv(
GLenum coord, |
|
GLenum pname, |
|
const GLint *params |
|
); |
|
Parameters
coord
A texture
coordinate. Must be one of the following: GL_S, GL_T, GL_R, or GL_Q.
pname
The symbolic
name of the texture-coordinate generation function or function parameters. Must
be GL_TEXTURE_GEN_MODE, GL_OBJECT_PLANE, or GL_EYE_PLANE.
params
A pointer to
an array of texture generation parameters. If pname is
GL_TEXTURE_GEN_MODE, then the array must contain a single symbolic constant,
one of GL_OBJECT_LINEAR, GL_EYE_LINEAR, or GL_SPHERE_MAP. Otherwise, params
holds the coefficients for the texture-coordinate generation function specified
by pname.
Remarks
The
glTexGen function selects a texture-coordinate generation function or
supplies coefficients for one of the functions. The coord parameter
names one of the (s,t,r,q) texture coordinates, and
it must be one of these symbols: GL_S, GL_T, GL_R, or GL_Q. The pname
parameter must be one of three symbolic constants: GL_TEXTURE_GEN_MODE,
GL_OBJECT_PLANE, or GL_EYE_PLANE. If pname is GL_TEXTURE_GEN_MODE, then params
chooses a mode, one of GL_OBJECT_LINEAR, GL_EYE_LINEAR, or GL_SPHERE_MAP. If pname
is either GL_OBJECT_PLANE or GL_EYE_PLANE, params contains coefficients
for the corresponding texture generation function.
If the
texture generation function is GL_OBJECT_LINEAR, the function
{bml bm56.BMP}
is used,
where g is the value computed for the coordinate named in coord; p (1) , p (2) , p (3) , and p (4) are the four values supplied in params;
and x (o) , y (o) , z (o) , and w
(o) are the object coordinates of the vertex. This
function can be used to texture-map terrain using sea level as a reference
plane (defined by p (1) , p (2) , p (3) , and p
(4) ). The altitude of a terrain vertex
is computed by the GL_OBJECT_LINEAR coordinate generation function as its
distance from sea level; that altitude is used to index the texture image to
map white snow onto peaks and green grass onto foothills, for example.
If the
texture generation function is GL_EYE_LINEAR, the function
{bml bm57.BMP}
is used,
where
{bml bm58.BMP}
and x (e) , y (e) , z (e) , and w
(e) are the eye coordinates of the vertex, p (1) , p (2) , p (3) , and p (4) are the values supplied in params, and M
is the modelview matrix when glTexGen is invoked. If M is poorly
conditioned or singular, texture coordinates generated by the resulting
function may be inaccurate or undefined.
Note that the
values in params define a reference plane in eye coordinates. The
modelview matrix that is applied to them may not be the same one in effect when
the polygon vertices are transformed. This function establishes a field of
texture coordinates that can produce dynamic contour lines on moving objects.
If pname
is GL_SPHERE_MAP and coord is either GL_S or GL_T, s and t
texture coordinates are generated as follows. Let u be the unit vector
pointing from the origin to the polygon vertex (in eye coordinates). Let n be the current normal, after transformation to eye
coordinates. Let f = (f
(x ) f (y ) f (z) )T be the
reflection vector such that
{bml bm59.BMP}
Finally, let
{bml bm60.BMP}
Then the
values assigned to the i and t texture coordinates are
{bml bm61.BMP}
A
texture-coordinate generation function is enabled or disabled using glEnable
The following
functions retrieve information related to glTexGen:
glGetTexGen
glIsEnabled with argument GL_TEXTURE_GEN_S
glIsEnabled
with argument GL_TEXTURE_GEN_T
glIsEnabled
with argument GL_TEXTURE_GEN_R
glIsEnabled
with argument GL_TEXTURE_GEN_Q
Error Codes
The following
are the error codes generated and their conditions.
Error
Code |
Condition |
GL_INVALID_ENUM
|
coord or pname was not an accepted defined value,
or when pname was GL_TEXTURE_GEN_MODE and params was not an
accepted defined value. |
GL_INVALID_ENUM
|
pname was GL_TEXTURE_GEN_MODE, params was
GL_SPHERE_MAP, and coord was either GL_R or GL_Q. |
GL_INVALID_OPERATION
|
glTexGen was called between a call to glBegin and the
corresponding call to glEnd. |
See Also